Traditional end user database reporting methods read a great deal of detailed information and then display only a portion of that detailed information (i.e., the fields in the report output and not all the data read from the database) at a high level of detail (i.e., a great deal of data records without aggregation). This is the case even though oftentimes an end user is interested in an aggregated view (e.g., totals grouped by specific dimensions). This traditional approach consumes a lot of resources. For example, many irrelevant details are read from the database, a vast amount of resources is allocated for many rows and many columns, and there are long response times. That is, a good amount of time is spent in the database reading irrelevant information, which is not displayed. And even if only the fields to be displayed are read from the database, oftentimes the structure used for working with the information read from the database is made up of all the data fields of a record, the reading of which results in an unnecessary allocation of memory.